function randomSort1(arr) {
  for (let i = 0, l = arr.length; i < l; i++) {
    let rc = parseInt(Math.random() * l)
    // 让当前循环的数组元素和随机出来的数组元素交换位置
    const empty = arr[i]
    arr[i] = arr[rc]
    arr[rc] = empty
  }
  return arr
}
// console.log(randomSort1(arr1))
// console.log(randomSort1(arr1))

// 2、生成新数组

// 申明一个新的空数组,利用 while 循环，如果数组长度大于 0，就继续循环；
// 每次循环都随机一个在数组长度范围内的数，将随机数位置上的元素 push 到新数组里，
// 并利用 splice（对 splice 不太理解的同学可以看这里）截取出随机数位置上的元素，同时也修改了原始数组的长度；
function randomSort2(arr) {
  var mixedArr = []
  while (arr.length > 0) {
    let rc = parseInt(Math.random() * arr.length)
    mixedArr.push(arr[rc])
    arr.splice(rc, 1)
  }
  return mixedArr
}
// 例子
// var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
// console.log(randomSort2(arr1))

// 3、 arr.sort

// 如果 compareFunction(a, b)的返回值 小于 0 ，那么 a 会被排列到 b 之前；
// 如果 compareFunction(a, b)的返回值 等于 0 ，那么 a 和 b 的相对位置不变；
// 如果 compareFunction(a, b)的返回值 大于 0 ，那么 b 会被排列到 a 之前

function randomSort3(arr) {
  arr.sort(function (a, b) {
    return Math.random() - 0.5
  })
  return arr
}
// 例子
// var arr3 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
// console.log(randomSort3(arr3))
